package com.mr.apigateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Arrays;

/**
 * Class: CorsConfig
 * User (作者):MRui
 * TODO (描述)：Cors跨域配置
 * C-cross  O-origin   R-resource  S-sharing（跨域共享）
 * Date 2018-11-17 23:15
 */
@Configuration
public class CorsConfig {
    /*
    * 跨域问题有两种解决方案
    * 1.直接在需要跨域的方法或者类上面加入加入注解
    * @CrossOrigin(allowCredentials = true)    allowCredentials = true ：允许cookie跨域
    * 2.在zuul网关中配置本配置文件
    * */
    @Bean
    public CorsFilter corsFilter(){
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();

        //是否支持cookie跨域
        config.setAllowCredentials(true);
        //原始域名 * 所有 例如http://www.a.com
        config.setAllowedOrigins(Arrays.asList("*"));
        //允许的头
        config.setAllowedHeaders(Arrays.asList("*"));
        //允许的方法 get/post
        config.setAllowedMethods(Arrays.asList("*"));
        //缓存时间
        config.setMaxAge(300l);

        //路径设置为所有
        source.registerCorsConfiguration("/**",config);
        return new CorsFilter(source);
    }
}
